

package main.new_2024.month_06;


import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * @Description: todo 2288. 价格减免
 * 句子 是由若干个单词组成的字符串，单词之间用单个空格分隔，其中每个单词可以包含数字、小写字母、和美元符号 '$' 。如果单词的形式为美元符号后跟着一个非负实数，那么这个单词就表示一个 价格 。
 * 例如 "$100"、"$23" 和 "$6" 表示价格，而 "100"、"$" 和 "$1e5 不是。
 * 给你一个字符串 sentence 表示一个句子和一个整数 discount 。对于每个表示价格的单词，都在价格的基础上减免 discount% ，并 更新 该单词到句子中。所有更新后的价格应该表示为一个 恰好保留小数点后两位 的数字。
 * 返回表示修改后句子的字符串。
 * 注意：所有价格 最多 为 10 位数字。
 *
 * @Author: Take-off
 * @Date: 1:00 PM 2024/2/27
 * @Param:
 * @return:
 **/
public class Solution0619 {

    //价格减免
    public String discountPrices(String sentence, int discount) {
        StringBuilder sb =new StringBuilder();
        for (String temp:sentence.split(" ")){
            char[] charTemp = temp.toCharArray();
            if (charTemp[0] == '$' && charTemp.length > 1){
                boolean flag = true;
                for (int i = 1;i<temp.length();i++){
                    if (!Character.isDigit(charTemp[i])){
                        flag = false;
                        break;
                    }
                }
                if (flag){
                    BigDecimal divide = (new BigDecimal(temp.substring(1)).multiply(new BigDecimal(100 - discount))).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
                    sb.append('$').append(divide.toPlainString());
                }else {
                    sb.append(temp);
                }
            }else {
                sb.append(temp);
            }
            sb.append(' ');
        }
        return sb.substring(0,sb.length()-1);
    }

    public static void main(String[] args) {
        Solution0619 test = new Solution0619();
        String temp = test.discountPrices("1 2 $3 4 $5 $6 7 8$ $9 $10$", 100);
        System.out.println(temp);

    }


}

